home *** CD-ROM | disk | FTP | other *** search
/ Delphi 2.0 - Programmer's Utilities Power Pack / Delphi 2.0 Programmer's Utilities Power Pack.iso / e_to_l / imlib201 / mmblob.pas < prev    next >
Pascal/Delphi Source File  |  1996-09-15  |  8KB  |  280 lines

  1. unit Mmblob;
  2.  
  3. interface
  4.  
  5. uses WinTypes, WinProcs, Classes, Graphics, Forms, Controls, Buttons,
  6.   StdCtrls, ExtCtrls, MPlayer, DB, DBTables, DBCtrls, Gauges, SysUtils,
  7.   Dialogs, Mask, TDBMulti;
  8.  
  9. type
  10.   TBtnBottomDlg = class(TForm)
  11.     CancelBtn: TBitBtn;
  12.     DBMediaPlayer1: TDBMediaPlayer;
  13.     DataSource1: TDataSource;
  14.     Table1: TTable;
  15.     DBNavigator1: TDBNavigator;
  16.     Gauge1: TGauge;
  17.     OpenDialog1: TOpenDialog;
  18.     BitBtn1: TBitBtn;
  19.     CheckBox1: TCheckBox;
  20.     CheckBox2: TCheckBox;
  21.     OpenDialog2: TOpenDialog;
  22.     BitBtn2: TBitBtn;
  23.     DBMultiMedia1: TDBMultiMedia;
  24.     DBEdit1: TDBEdit;
  25.     DBEdit2: TDBEdit;
  26.     DBMemo1: TDBMemo;
  27.     Label1: TLabel;
  28.     BitBtn3: TBitBtn;
  29.     CheckBox3: TCheckBox;
  30.     CheckBox4: TCheckBox;
  31.     Label2: TLabel;
  32.     Label3: TLabel;
  33.     Label5: TLabel;
  34.     Label6: TLabel;
  35.     Label7: TLabel;
  36.     Label4: TLabel;
  37.     Bevel1: TBevel;
  38.     Label8: TLabel;
  39.     Label9: TLabel;
  40.     procedure CancelBtnClick(Sender: TObject);
  41.     procedure FormCreate(Sender: TObject);
  42.     procedure BitBtn1Click(Sender: TObject);
  43.     procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
  44.     procedure DBMediaPlayer1Click(Sender: TObject; Button: TMPBtnType;
  45.       var DoDefault: Boolean);
  46.     procedure CheckBox1Click(Sender: TObject);
  47.     procedure CheckBox2Click(Sender: TObject);
  48.     procedure BitBtn2Click(Sender: TObject);
  49.     procedure BitBtn3Click(Sender: TObject);
  50.     procedure CheckBox3Click(Sender: TObject);
  51.     procedure CheckBox4Click(Sender: TObject);
  52.   private
  53.     function JustPathname(PathName : string) : string;
  54.     { Private declarations }
  55.   public
  56.     { Public declarations }
  57.   end;
  58.  
  59. var
  60.   BtnBottomDlg: TBtnBottomDlg;
  61.  
  62. implementation
  63.  
  64. {$R *.DFM}
  65.  
  66. procedure TBtnBottomDlg.CancelBtnClick(Sender: TObject);
  67. begin
  68. {close the app}
  69.  close;
  70. end;
  71.  
  72. procedure IwillBeCalled ( i : integer); export;
  73. {Call back function. MUST be exported otherwise the DLL can't find it}
  74. begin
  75.   {Process Progress bar}
  76.   BtnBottomDlg.Gauge1.Progress:=i;
  77.  
  78.   {Live in peace with others}
  79.   Application.ProcessMessages;
  80. end;
  81.  
  82. procedure TBtnBottomDlg.FormCreate(Sender: TObject);
  83. begin
  84.     {Register the callback Fuction to the VCL}
  85.     TDBMultiMediaCallBack:=IwillBeCalled;
  86.  
  87.     {init label caption with file type}
  88.     Label1.Caption:=DBMultiMedia1.BFiletype;
  89.  
  90.     {init label caption with file size}
  91.     Label2.Caption:=IntToStr(DBMultiMedia1.Bsize);
  92.  
  93.     {On/Off Play the multimedia automatically}
  94.     DBMultiMedia1.AutoPlayMultiMedia:=CheckBox1.Checked;
  95.  
  96.     {On/Off Hide the DBMediaPlayer Automatically if MM is present}
  97.     DBMultiMedia1.AutoHideMediaPlayer:=CheckBox2.Checked;
  98.  
  99.     {On/Off RePlay the multimedia automatically}
  100.     DBMultiMedia1.AutoRePlayMultiMedia:=CheckBox4.Checked;
  101.  
  102.     {On/Off Display the multimedia automatically}
  103.     DBMultiMedia1.AutoDisplay:=CheckBox3.Checked;
  104. end;
  105.  
  106.  
  107. procedure TBtnBottomDlg.BitBtn1Click(Sender: TObject);
  108. begin
  109.   {fill the OpenDialog filter with the MM extensions as found in the win.ini
  110.    (This means that the appropriate drivers are installed)}
  111.   OpenDialog1.filter:=DBMultiMedia1.GetMultiMediaExtensions;
  112.  
  113.   {Execute the open dialog box}
  114.   if OpenDialog1.Execute then begin
  115.  
  116.     {Place the Database in append mode}
  117.     Table1.Append;
  118.  
  119.     {Load the Multimedia into the Blob}
  120.     DBMultiMedia1.LoadfromFile(OpenDialog1.FileName);
  121.  
  122.     {Post that thing}
  123.     Table1.Post;
  124.   end;
  125.  
  126. end;
  127.  
  128. procedure TBtnBottomDlg.BitBtn3Click(Sender: TObject);
  129. begin
  130.   {fill the OpenDialog filter with the MM extensions as found in the win.ini
  131.    (This means that the appropriate drivers are installed)}
  132.   OpenDialog1.filter:=DBMultiMedia1.GetMultiMediaExtensions;
  133.  
  134.   {Execute the open dialog box}
  135.   if OpenDialog1.Execute then begin
  136.  
  137.     {Place the Database in edit mode}
  138.     Table1.Edit;
  139.  
  140.     {Load the Multimedia into the Blob}
  141.     DBMultiMedia1.LoadfromFile(OpenDialog1.FileName);
  142.  
  143.     {Post that thing}
  144.     Table1.Post;
  145.   end;
  146.  
  147. end;
  148.  
  149.  
  150. procedure TBtnBottomDlg.DBNavigator1Click(Sender: TObject;
  151.   Button: TNavigateBtn);
  152. begin
  153.    {Set the blob window to visible}
  154.     DBMultiMedia1.Visible:=true;
  155.  
  156.     {Set the Video display rectangle to the rectangle of the blob window}
  157.     DBMediaPlayer1.DisplayRect:=Rect(0,0,DBMultiMedia1.Width,DBMultiMedia1.Height);
  158.  
  159.     {Set the Video display to the the display of the blob window}
  160.     DBMediaPlayer1.Display:=DBMultiMedia1;
  161.  
  162.  
  163.     {init label caption with file type}
  164.     Label1.Caption:=DBMultiMedia1.BFiletype;
  165.  
  166.     {init label caption with file size}
  167.     Label2.Caption:=IntToStr(DBMultiMedia1.Bsize);
  168.  
  169.     {Suprise <g>}
  170.     if (Label1.Caption = 'MID') or (Label1.Caption = 'RMI') or (Label1.Caption = 'WAV') then
  171.     {hide blob window if no media needs to be display and auto hide is on}
  172.      DBMultiMedia1.Visible:=not CheckBox2.Checked;
  173. end;
  174.  
  175. procedure TBtnBottomDlg.DBMediaPlayer1Click(Sender: TObject;
  176.   Button: TMPBtnType; var DoDefault: Boolean);
  177. begin
  178.     {Set the Video display rectangle to the rectangle of the blob window}
  179.     DBMediaPlayer1.DisplayRect:=Rect(0,0,DBMultiMedia1.Width,DBMultiMedia1.Height);
  180.  
  181.     {Set the Video display to the the display of the blob window}
  182.     DBMediaPlayer1.Display:=DBMultiMedia1;
  183.  
  184.     {init label caption with file type}
  185.     Label1.Caption:=DBMultiMedia1.BFiletype;
  186.  
  187.     {init label caption with file size}
  188.     Label2.Caption:=IntToStr(DBMultiMedia1.Bsize);
  189.  
  190.     {Suprise <g>}
  191.     if (Label1.Caption = 'MID') or (Label1.Caption = 'RMI') or (Label1.Caption = 'WAV') then
  192.     {hide blob window if no media needs to be display and auto hide is on}
  193.      DBMultiMedia1.Visible:=not CheckBox2.Checked;
  194. end;
  195.  
  196.  
  197. procedure TBtnBottomDlg.CheckBox1Click(Sender: TObject);
  198. begin
  199.      {Play the appropriate multimedi when there}
  200.      DBMultiMedia1.AutoPlayMultiMedia:=CheckBox1.Checked;
  201. end;
  202.  
  203. procedure TBtnBottomDlg.CheckBox2Click(Sender: TObject);
  204. begin
  205.     {On/Off Hide the DBMediaPlayer Automatically if MM is present}
  206.      DBMultiMedia1.AutoHideMediaPlayer:=CheckBox2.Checked;
  207.  
  208.     {Suprise <g>}
  209.     if (Label1.Caption = 'MID') or (Label1.Caption = 'RMI') or (Label1.Caption = 'WAV') then
  210.     {hide blob window if no media needs to be display and auto hide is on}
  211.      DBMultiMedia1.Visible:=not CheckBox2.Checked;
  212. end;
  213.  
  214. procedure TBtnBottomDlg.CheckBox3Click(Sender: TObject);
  215. begin
  216.     {On/Off Display the multimedia automatically}
  217.      DBMultiMedia1.AutoDisplay:=CheckBox3.Checked;
  218. end;
  219.  
  220. procedure TBtnBottomDlg.CheckBox4Click(Sender: TObject);
  221. begin
  222.     {On/Off RePlay the multimedia automatically}
  223.     DBMultiMedia1.AutoRePlayMultiMedia:=CheckBox4.Checked;
  224. end;
  225.  
  226.  
  227. function TBtnBottomDlg.JustPathname(PathName : string) : string;
  228.     {-Return just the drive:directory portion of a pathname}
  229.   var
  230.     I : Word;
  231.   const
  232.      DosDelimSet : set of Char = ['\', ':', #0];
  233.   begin
  234.     I := Succ(Word(Length(PathName)));
  235.     repeat
  236.       Dec(I);
  237.     until (PathName[I] in DosDelimSet) or (I = 0);
  238.  
  239.     if I = 0 then
  240.       {Had no drive or directory name}
  241.       JustPathname[0] := #0
  242.     else if I = 1 then
  243.       {Either the root directory of default drive or invalid pathname}
  244.       JustPathname := PathName[1]
  245.     else if (PathName[I] = '\') then begin
  246.       if PathName[Pred(I)] = ':' then
  247.         {Root directory of a drive, leave trailing backslash}
  248.         JustPathname := Copy(PathName, 1, I)
  249.       else
  250.         {Subdirectory, remove the trailing backslash}
  251.         JustPathname := Copy(PathName, 1, Pred(I));
  252.     end else
  253.       {Either the default directory of a drive or invalid pathname}
  254.       JustPathname := Copy(PathName, 1, I);
  255.   end;
  256.  
  257.  
  258. procedure TBtnBottomDlg.BitBtn2Click(Sender: TObject);
  259. begin
  260. {open the table}
  261.  try
  262.       If OpenDialog2.execute then begin
  263.         Table1.Active:=False;
  264.         Table1.DataBaseName:=JustPathname(OpenDialog2.FileName);
  265.         Table1.TableName:=OpenDialog2.FileName;
  266.         Table1.Active:=True;
  267.       end;
  268.  finally
  269.         {Show or hide the append/replace button, depending on
  270.         the table active stasus}
  271.         BitBtn3.